属性查询 Sample详情
最后更新时间:2019年6月17日
属性条件查询,即为属性关键字查询,根据选择图层、字段、关键字对图层要素进行查询并显示查询结果。通过结果要素可获取其空间信息与属性信息,根据应用需求解析结果,并选择适合的方式展现。属性查询与空间查询整体思路一致,大部分步骤也相同,主要区别在于属性查询不需要设置空间范围条件,需设置属性过滤条件。
1
与空间查询类似,首先需准备待查询的图层数据。
Map map = mapView.getMap(); //获取地图对象 int index = map.indexOf("四级点"); //根据图层获取其索引值 VectorLayer vectorLayer= (VectorLayer) map.getLayer(index); //获取矢量图层
2
创建查询对象,为其设置构造的查询属性条件等参数。
//通过矢量图层创建查询对象 FeatureQuery featureQuery=new FeatureQuery(vectorLayer); //根据想要查询的字段、关键字、属性条件,构造SQL查询语句,保存为字符串。 String condition = "Name LIKE '%公园%'"; //设置属性查询条件 featureQuery.setWhereClause(condition); //设置每页结果数目,默认为10 featureQuery.setPageSize(20);
3
执行查询操作,并获取查询结果。
//进行要素查询 FeaturePagedResult result = featureQuery.query(); //自定义方法:以标注形式展示查询的位置点 showResultFeature(result);
4
解析查询返回的结果要素,可通过标注、列表等形式展示给用户。
//自定义方法:获取结果中的要素及其属性、几何 private void showResultFeature(FeaturePagedResult result) { //遍历所有页的查询结果 for (int i = 1; i <= result.getPageCount(); i++) { //获取页码对应的要素集合 List<Feature> featureList = result.getPage(i); for (int j = 0; j < featureList.size(); j++) { //遍历每一页的结果要素 //获取要素 Feature feature = featureList.get(j); java.util.Map<String, String> attributes = feature.getAttributes(); //获取要素属性 String featureName = attributes.get("Name"); //获取Name字段对应的字段值 Geometry fGeometry = feature.getGeometry(); //获取要素的几何信息 //可进一步获取信息,绘制标注,或以列表形式展示 } } }
实现效果如下图所示: